package com.rds.mongodb.service;

import com.rds.mongodb.entity.FileDocument;

import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
import java.util.Optional;

/**
 * 文件上传下载服务类
 *
 * @author Lin Zemin
 * @date 2020-10-28
 */
public interface FileService {

    /**
     * 保存文件
     * @param file 文件类
     * @return FileDocument
     */
    FileDocument saveFile(FileDocument file);

    /**
     * 上传文件到Mongodb的GridFs中
     * @param inputStream 文件流
     * @param contentType 文件类型
     * @return String
     */
    String uploadFileToGridFs(InputStream inputStream, String contentType);


    /**
     * 删除文件
     * @param id 文件id
     */
    void removeFile(String id);

    /**
     * 根据id查看文件
     * @param id 文件id
     * @return Optional<FileDocument>
     */
    Optional<FileDocument> getFileById(String id);


    /**
     * 分页列出文件
     * @param pageIndex 第几页
     * @param pageSize 每页几行
     * @return List<FileDocument>
     */
    List<FileDocument> listFilesByPage(int pageIndex, int pageSize);

    /**
     * 下载文件
     * @param id 文件id
     * @param response 响应类
     */
    void downLoadFile(HttpServletResponse response, String id);

}
